package com.cw.service;

import com.cw.common.api.ResultObject;
import com.cw.dto.OneToManyDto;
import com.cw.dto.PageDto;
import com.cw.dto.PersonChangreDto;
import com.cw.dto.UserDeptPostPojo;
import com.cw.entity.UserDeptPost;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 用户、部门、职务 服务类
 * </p>
 *
 * @author smq
 * @since 2021-04-28
 */
public interface IUserDeptPostService extends IService<UserDeptPost> {
    int insertList(List<UserDeptPost> list);

    List<UserDeptPostPojo> selectAll(String uId, String dId, String pId);
    /**
     * 根据用户Id查询所属部门名称
     * @param userId
     * @return
     */
    List<String> getDepsName(String userId);

    /**
     * 删除用户对应的部门职位信息
     * @param userId
     * @return
     */
    int deleteUserDeptPost(String userId,String deptId);


    /**
     * 功能描述: <br>
     * 〈添加部门和人员之间的关系〉
     *
     * @Param: [addDeptAndUserIdDto]
     * @Return: com.srm.util.ResultObject
     * @Author: wzw
     * @Date: 2019/11/7 11:43
     */
    ResultObject insertDeptAndUser(OneToManyDto addDeptAndUserIdDto);

    /**
     * 根据用户账号姓名查询部门编号（模糊查询）
     * @param userName
     * @return
     */
    List<Integer> getDepIdByUserName(String userName);



    /**
     * 根据部门Id和用户id数组 批量删除用户对应的部门职位信息
     */
    int deleteUserDeptPostByList( List<String> list, String deptId);

    /**
     * 功能描述: <br>
     * 〈添加人员和部门的关系〉
     *
     * @Param: [oneToManyDto]
     * @Return: com.srm.util.ResultObject
     * @Author: wzw
     * @Date: 2019/11/11 16:06
     */
    ResultObject insertDeptUser(OneToManyDto oneToManyDto);

    /**
     * 功能描述: <br>
     * 〈获得所有用户〉
     *
     * @Param: [userName]
     * @Return: com.srm.util.ResultObject
     * @Author: wzw
     * @Date: 2019/11/11 16:50
     */
    ResultObject getAllUserInfo(String userName);


    PageInfo<Map<String, Object>> getDeptInfo(PageDto pageDto);

    /**
     * 查询部门的总人数
     * @param list
     * @return
     */
    int getPersonsInDept(List<String> list);

    /**
     * 根据部门集合查询部门所有用户信息
     * @param list
     * @return
     */
    List<Map<String,Object>> getDeptUserByDepts(List<String> list);


    ResultObject updatePersonInchangre(PersonChangreDto personChangreDto);
}
